﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Serialization;

namespace FreeFlow.Administration
{
  /// <summary>
  /// Exception raised when access is attempted to an item that has been deleted from the database
  /// </summary>
  [Serializable]
  public class ItemDeletedException : FreeFlowException
  {
    /// <summary>
    /// Initializes a new instance of the <see cref="ItemDeletedException"/> class.
    /// </summary>
    public ItemDeletedException()
    {
    }

    /// <summary>
    /// Initializes a new instance of the <see cref="ItemDeletedException"/> class.
    /// </summary>
    /// <param name="message">The exception message.</param>
    public ItemDeletedException(string message)
      : base(message)
    {
    }

    /// <summary>
    /// Initializes a new instance of the <see cref="ItemDeletedException"/> class.
    /// </summary>
    /// <param name="message">The message.</param>
    /// <param name="innerException">The inner exception.</param>
    public ItemDeletedException(string message, Exception innerException) :
      base(message, innerException)
    {
    }

    /// <summary>
    /// Initializes a new instance of the <see cref="ItemDeletedException"/> class.
    /// </summary>
    /// <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
    /// <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
    /// <exception cref="T:System.ArgumentNullException">
    /// The <paramref name="info"/> parameter is null.
    /// </exception>
    /// <exception cref="T:System.Runtime.Serialization.SerializationException">
    /// The class name is null or <see cref="P:System.Exception.HResult"/> is zero (0).
    /// </exception>
    protected ItemDeletedException(SerializationInfo info, StreamingContext context) :
      base(info, context)
    {
    }
  }
}
